/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2017-2019. All rights reserved.
 * Description: read data by byte in ff
 * Author: HiMobileCam middleware develop team
 * Create: 2017-12-22
 */

#ifndef FF_BITS_READER_H
#define FF_BITS_READER_H

#include "hi_mw_type.h"

typedef struct {
    const HI_U8 *data;
    HI_U32 size;
    HI_U32 offset;
} FfBitReader;

HI_S32 FFBitsReaderCreate(FfBitReader **outReader, const HI_U8 *data, HI_U32 dataSize);

HI_S32 FFBitsReaderDestroy(FfBitReader* reader);

HI_BOOL FfBitReadU1(FfBitReader* reader);
HI_U8 FfBitReadU2(FfBitReader* reader);
HI_U8 FfBitReadU3(FfBitReader* reader);
HI_U8 FfBitReadU4(FfBitReader* reader);
HI_U8 FfBitReadU5(FfBitReader* reader);
HI_U8 FfBitReadU6(FfBitReader* reader);
HI_U8 FfBitReadU8(FfBitReader* reader);
HI_U16 FfBitReadU16(FfBitReader* reader);
HI_U32 FfBitReadU32(FfBitReader* reader);
HI_U32 FfBitReadUeV(FfBitReader* reader);
HI_S32 FfBitReadSeV(FfBitReader* reader);
HI_U32 FfBitReadUN(FfBitReader* reader, HI_U8 bits);

#endif //FF_BITS_READER_H